#ifndef LARGEDISPLAYFRAMEWORKLAYER_H
#define LARGEDISPLAYFRAMEWORKLAYER_H

#if defined (_WIN32)

	#pragma once

	// The following ifdef block is the standard way of creating macros which make exporting 
	// from a DLL simpler. All files within this DLL are compiled with the LARGEDISPLAYFRAMEWORKLAYER_EXPORTS
	// symbol defined on the command line. this symbol should not be defined on any project
	// that uses this DLL. This way any other project whose source files include this file see 
	// LARGEDISPLAYFRAMEWORKLAYER_API functions as being imported from a DLL, whereas this DLL sees symbols
	// defined with this macro as being exported.
	#ifdef LARGEDISPLAYFRAMEWORKLAYER_EXPORTS
	#define LARGEDISPLAYFRAMEWORKLAYER_API __declspec(dllexport)
	#else
	#define LARGEDISPLAYFRAMEWORKLAYER_API __declspec(dllimport)
	#endif

	// Disabling the warnings for usage of STL classes without a DLL interface
	#pragma warning(disable: 4251)

#elif defined (__APPLE__)

	#define LARGEDISPLAYFRAMEWORKLAYER_API

#endif


/**
 * This template function allows finding out the type of a given class at
 * run-time.
 *
 * @param t the T2 class object to be verified as being of class T1.
 * @return true if t is an object of class T1, false otherwise.
 */
template<typename T1, typename T2> inline bool isTypeOf(T2* t)
{
	// If the cast result is different than NULL, t can be cast as T1
   return (dynamic_cast<T1*>(t) != 0);
}



#endif // LARGEDISPLAYFRAMEWORKLAYER_H
